import { defineConfig } from 'vite'
import { resolve } from 'path'
import vue from '@vitejs/plugin-vue'
import VitePluginElementPlus from 'vite-plugin-element-plus'

// 获取环境变量
const packageConfig = require('./package.json')
const NODE_ENV = packageConfig.NODE_ENV[process.env.NODE_ENV]

export default ({ mode }) => {
  return defineConfig({
    // 抛到全局
    define: {
      __NODE_ENV__: NODE_ENV
    },
    base:'./', // 项目部署的基础路径
    outDir: 'dist', // 根目录，构建输出将放在其中。如果目录存在，它将在构建之前被删除
    server: {
      host: '0.0.0.0', // 服务器主机名
      port: 3000, // 端口
      // strictPort: true, // 设为 true 时若端口已被占用则会直接退出，而不是尝试下一个可用端口
      open: false, // 是否自动在浏览器打开
      https: false, // 是否开启 https
      // ssr: false, // 服务端渲染
      // 代理设置
      proxy: {
        // /api/开头的请求都适用于该规则
        // 注意是以/api开头，即：axios.post({url: '/api/xxx/xxx'})
        '^/api/.*': {
          target: NODE_ENV.API,
          logLevel: 'debug',
          // ws: true, // 是否代理 websockets
          // secure: true, // 是否https接口
          // rewrite: (path) => path.replace(/^\/api/, '') // 匹配地址重写
        }
      }
    },
    // 打包配置
    /* build: {
      target: 'modules',
      outDir: 'dist', // 指定输出路径
      assetsDir: 'assets', // 指定生成静态资源的存放路径
      minify: 'terser' // 混淆器，terser构建后文件体积更小
    }, */
    plugins: [
      vue(),
      // element-plus 按需加载
      VitePluginElementPlus({ 
        // 如果你需要使用 [component name].scss 源文件，你需要把下面的注释取消掉。
        // 对于所有的 API 你可以参考 https://github.com/element-plus/vite-plugin-element-plus 
        // 的文档注释 
        // useSource: true 
      })
    ],
    resolve: {
      alias: {  
        // 导入文件夹别名
        '@': resolve(__dirname, '.', 'src/'),
        '@img': resolve(__dirname, '.', 'src/assets/images/')
      }
    }
  })
}